Eric MILLOZ

            



IntegSite - Génération de formulaires


Eric MILLOZ © 2001-2017

Sommaire

1 - Fonctionnement du générateur de formulaire

2 - Formulaire partir d'un fichier (sans base de données):

3 - Formulaire à partir d'une table contenue dans la base de donnes :

4 - Exemple make


1 - Fonctionnement du générateur de formulaire

Le but de cette fonctionnalité est d'aider la création de formulaire. Les formulaires sont décrit par vous à l'aide d'un fichier, puis le logiciel construit le formulaire guidé par la description.

Il y a 2 moyens de générer un formulaire, par un fichier descriptif texte et/ou à partir de la base de données, soit un mixe des 2 :

La fonction génère le formulaire à partir d'une table de la base de données.
La fonction génère les formulaires à partir d'un fichier texte qui décrit les champs sans base de données.

Le plus souvent, le besoin d'un formulaire provient de l'utilisation d'une table de la base de donnes. Cette fonctionnalité va permettre de générer du code PHP pour réaliser les formulaires se basant sur les informations provenant d'une table MySQL nommée.

Le fichier peut décrire aussi des champs pour constituer un formulaire dans un fichier PHP.

On peut mixer les 2, indiquer une table pour faire le formulaire et surchargé les champs pour obtenir plus de souplesse dans la création.

Le fichier descriptif d'un formulaire est toujours un fichier texte.

Vous pouvez télécharger cet exemple en bas de cette page, ou en cliquant ici.

2 - Formulaire partir d'un fichier (sans base de données):

Vous allez créer un fichier descriptif qui va décrire chaque champs de votre formulaire. La description terminée, IntegSite va convertir le fichier texte en fichier PHP au format HTML 5 et avec du code permettant de faire fonctionner le formulaire.

Un fichier de log vous décrira les éventuels problèmes rencontrés lors de la création. Le fichier de log aura le même nom que le nom de votre fichier descriptif.

Exemple du fichier descriptif :

# FICHIER (sans extension) omise alors ERREUR
FICHIER=client.php
#
# ***************************************************************
#
# CHAMP donnée technique pour PHP (nom du champ dans le formulaire
CHAMP=nom
# Type de champ (donnée HTML)
INPUTTAG=input
# Exemple qui apparaîtra dans le champ avant saisie. Comme un exemple des données a saisir
INDICE=Votre nom
# LIBELLE apparaissant dans le formulaire, intitulé du champ
LIBELLE=Nom
# TYPE du champs TEXT ou , PASSWORD,FILE,CHECKBOX,RADIO,SELECT.
TYPE=TEXT
# LONGUEUR du champ (Si non précisé à la déclaration, la longueur sera 20)
LONGUEUR=20
# OBLIGATOIRE (O/N) (Contrôle en html5)
OBLIGATOIRE=N
# Expression régulière (exemple ici que des chiffres séparé par des espaces)
PATTERN=^((\+\d{1,3}(-| )?\(?\d\)?(-| )?\d{1,5})|(\(?\d{2,6}\)?))(-| )?(\d{3,4})(-| )?(\d{4})(( x| ext)\d{1,5}){0,1}$
# Si ce champ doit avoir le focus en premier
AUTOFOCUS=O
#Si le champ est visible ou pas.. on peut déactiver ce champs, il n’apparaîtra pas dans le formulaire. (par défaut O)
VISIBLE=O
FINDEF
# champ suivant
CHAMP=Commentaire
# Type de champ
INPUTTAG=input
# Exemple qui apparaîtra dans le champ avant saisie.
INDICE=Votre Commentaire
LIBELLE=Commentaire
TYPE=TEXTEAREA
# nombre de colonne de la boite de saisie.
COL=20
# nombre de ligne de la boite de saisie.
ROW=20
# Si le texte dans la boite de saisie doit être wrapper (ramener sur la même ligne) ou pas.
WRAP=O
FINDEF
#
CHAMP=civS
LIBELLE=Civilité SELECT
TYPE=SELECT
ELEMENTS=M.,Monsieur;
ELEMENTS=*Mme,Madame;
ELEMENTS=Melle,Mademoiselle;
LONGUEUR=20
OBLIGATOIRE=N
FINDEF
#
CHAMP=civRADIO
LIBELLE=Civilité RADIO
TYPE=RADIO
ELEMENTS=Radio1,radio1;
ELEMENTS=*Radio2,case radio 2;
ELEMENTS=Radio3,case radio3;
LONGUEUR=20
OBLIGATOIRE=N
FINDEF


Les lignes commençant par # sont des commentaires.
Paramètres :
TAG Signification Exemples : 
CHAMP le nom technique du champ du formulaire. CHAMP=Nom du champs, nom prénom , etc... 
INPUTTAG désigne le type d'input du champ (text, textarea, ..) INPUTTAG=TEXT (ou textarea) 
INDICE permet de faire afficher dans le champ un indice de contenu. INDICE=Vous devriez taper ici votre code postal 
LIBELLE sera le texte devant le champs à saisir. LIBELLE=Saisissez votre nom : 
TYPE est le type de champ, par défaut c'est TEXT  TYPE=TEXT ou PASSWORD ou FILE ou CHECKBOX ou RADIO ou SELECT. 
LONGUEUR est la longueur par défaut, cette caractéristique ne sera pas utilisé si non mentionné LONGUEUR=20 (la case du champs fera 20 caractères de log) 
ELEMENTS c'est les éléments d'un champ multi-entrée, RADIO, SELECT, ...
# utilisé avec le TYPE=CHECKBOX ou RADIO ou SELECT. 
ELEMENTS=M.,Monsieur 
ELEMENTS= Liste les éléments :
 
# ici une étoile pour que cet élément soit affiché par défaut.
ELEMENTS=*Mme,Madame
ELEMENTS=Melle,Mademoiselle 
OBLIGATOIRE demande un contrôle PHP pour valider que le champ doit être obligatoire.  OBLIGATOIRE=O (ou N, par défaut N) 
COL, ROW et WRAP ne fonctionne qu'en présence de TYPE=TEXTAREA #Pour un pavé de saisie de 80 colonnes de large, 10 de haut, avec Wrapping.(rattache la suite de la phrase sur la ligne suivante.)
COL=80
ROW=10
WRAP=O
 
PATTERN est une spécificité HTML5, basé sur les expressions régulières # un script qui permet de formater un saisie ici, cinq lettres
< input type="text" name="country_code" pattern="[A-Za-z]{5}" title="5 caractères" > 
AUTOFOCUS permet, au chargement de la page, de placer le focus sur le champ défini. AUTOFOCUS=O (ou N, par défaut N) 
FINDEF indique que le descriptif du champ est terminé, les infos suivante concerne le champ suivant s'il existe. FINDEF 

3 - Formulaire à partir d'une table contenue dans la base de donnes :

Vous avez une base de données et vous aimeriez qu'une table ou plusieurs, soient traduites en formulaire.

Il faudra modifier le fichier de configuration pour que IntegSite puisse lire les informations de la table pour générer les champs de saisie.
Accès base de données
Variables Valeurs possibles 
HOST Le nom DNS ou l'ip de votre serveur MySQL ou si votre MySQL est sur votre PC, localhost 
DATABASE Le nom de la base de données. 
USER Le utilisateur ici ce sera toujours root ou un autres utilisateurs qui aura tous les droits sur la base de données. 
MDP Le mot de passe de ce super utilisateur. 

Je vous conseille de créer un répertoire formulaire au même niveau que le répertoire sources. Dans ce répertoire, vous y mettrez les fichiers .form et les fichiers .bat spécifique à chaque formulaires.

Le fichier descriptif de formulaire doit être un peu diffèrent de celui sans table.

# FICHIER (sans extension) omise alors ERREUR
FICHIER=client.php
# TABLE formulaire basé sur cette table
TABLE=TEST
#
# ***************************************************************
#
# CHAMP donné technique pour PHP
CHAMP=nom
# LIBELLE apparaissant dans le formulaire sinon précisé, cela sera le commentaire du champ
LIBELLE=Nom
# TYPE du champs sera la longueur du champ de la table
# LONGUEUR du champ sera la longueur du champ de la table
OBLIGATOIRE=N
VISIBLE=O
FINDEF
# champ suivant
CHAMP=Prenom
LIBELLE=Prénom
TYPE=TEXT
LONGUEUR=20
OBLIGATOIRE=N
VISIBLE=O
FINDEF


  • Seuls les champs indiqués dans le formulaire seront traités par IntegSite.

  • Si l'étiquette LIBELLE n'est pas présente, c'est le commentaire du champ de MySQL qui sera affiché. (j'ai choisi de me servir de l'attribut commentaire de la base MySQL pour y stocker le libellé du champs. Exemple : pour le champ nom, le commentaire du champ sera "Nom:")

  • Le paramètre VISIBLE, permet d'afficher ce champ dans le formulaire. Avec la valeur N (Non) le champ ne s'affichera pas (Champ Id par exemple).

  • Le paramètre LONGUEUR sera extrait de la base de données pour que le champ de saisie soit de la longueur de champ de la base de données.

  • Le paramètre OBLIGATOIRE permet d’empêcher le formulaire d'être validé si le champ est vide. c'est une fonctionnalité HTML 5

  • Le paramètre FINDEF permet d'indiquer que l'on change de champ.

  • Il suffit d'indiquer à IntegSite la table utilisée pour construire le formulaire. La table entière sera traduite avec tous ses champs sauf indication contraire.

    Les descriptifs contenus dans le fichier texte vont modifier la façon dont le logiciel va traiter le formulaire. Les précisions permettent de rajouter ou faire disparaître des champs. on peut surcharger les attributs des champs de la base de données.

    Vous pouvez utiliser aussi un fichier descriptif qui va indiquer IntegSite les champs que vous voulez rajouter, enlever ou modifier dans le formulaire. Vous pouvez modifier le libellé du champ, sa longueur, le type de champ, les éléments qui le compose (pour les boutons radio).

    Exemple :

    La table Test définie comme telle :
    Champs Type de champs Commentaire 
    Id BigInt (Primary) Identifiant 
    nom varchar(50) Nom : 
    prénom varchar(50) Prénom : 
    En indiquant cette table, IntegSite va créer un formulaire pour permettre la création, suppression et modification d'un enregistrement de cette table.

    Le champ Id n'est pas visible dans le formulaire car c'est une clé primaire, il sera (hidden pour modification), mais on peut le rendre VISIBLE à l'aide du fichier descriptif.




    Le fichier PHP généré contiendra, les instructions PHP de récupération POST des champs, la gestion de l'action de création, suppression et modification d'un enregistrement et le formulaire HTML.

    Important : Quand on mixe les deux techniques, (table et surcharge) le nom du champ contenu dans le fichier descriptif doit être le même que celui de la base de données pour que le rapprochement puisse avoir lieu. (sinon, cela fera un champ supplémentaire.)

    Il faudra intégrer et adapter ce formulaire en fonction de votre utilisation.

    Commande

    Dans le fichier de commande (sous Windows XP, pour Windows 7 et +, voir le fichier d'exemple en téléchargement.):

    C:\Program Files\IntegSite\Integsite.exe -c Chemin_du_fichier_de_configuration -form Chemin_du_fichier_descriptif_du_formulaire.form

    La commande '-form' permet de générer la construction du formulaire suivant le descriptif donné dans le fichier de configuration..

    Exemple de formulaire généré (fichier descriptif texte) :

    Nom
    Prénom
    Civilité SELECT
    Civilite RADIO
    radio1
    case radio 2
    case radio3



    Pour les champs "civilité" en select et radio les informations sont :
    #
    LIBELLE=Civilité SELECT
    CHAMP=civS
    TYPE=SELECT
    ELEMENTS=M.,Monsieur
    # ici une étoile pour que cet élément soit affiché par défaut.
    ELEMENTS=*Mme,Madame
    ELEMENTS=Melle,Mademoiselle
    LONGUEUR=20
    OBLIGATOIRE=N
    CONTROLEJS=N
    FINDEF
    #
    LIBELLE=Civilité RADIO
    CHAMP=civRADIO
    TYPE=RADIO
    ELEMENTS=Radio1,radio1
    # ici une étoile pour que cet élément soit affiché par défaut.
    ELEMENTS=*Radio2,case radio 2
    ELEMENTS=Radio3,case radio3
    LONGUEUR=20
    OBLIGATOIRE=N
    CONTROLEJS=N
    FINDEF


    Le script PHP, pour la gestion de ce formulaire, sera généré automatiquement pour permettre de gagner du temps et diminuer le nombre d'erreur à la création. Les créations sont ainsi standardisés et industrialisés, il reste encore du travail de mise en page.

    Les fonctions générés permettent la création, la modification, et la suppression d'enregistrements, ce squelette de page peut servir pour faire la page finale de votre formulaire.

    A chaque modification de base de données champs , longueur, type, etc.. , vous pouvez régénérer votre ISCLASS (classe de gestion de base de données) et votre formulaire en un clin d'oeil.

    Le formulaire est en HTML5, les navigateurs sont de plus en plus compatible avec ce standard.

    4 - Exemple make

    Cliquer ici pour télécharger le fichier exemple monsite.zip

    Décompresser dans votre lecteur D: (ou si vous n'en avez pas, adaptez le chemin dans les fichiers .bat et .cfg)
    Le fichier Form_exemple_W7.bat est pour Windows 7 et +.
    Le fichier Form_exemple.bat est pour Windows XP.

    Articles
    La i-Girouette (09/12/2017)TER St-Etienne Ambérieux (15/04/2018)